﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ФормированиеПечатныхФорм
	{
		// Возвращает структуру данных со сводным описанием контрагента
		//
		// Параметры:
		//  СписокСведений - список значений со значенийми параметров организации
		//   СписокСведений формируется функцией СведенияОЮрФизЛице
		//  Список         - список запрашиваемых параметров организаиии
		//  СПрефиксом     - Признак выводить или нет префикс параметра организации
		//
		// Возвращаемое значение:
		//  Строка - описатель организации / контрагента / физ.лица.
		//

		public object ОписаниеОрганизации(/*СписокСведений, Список = "", СПрефиксом = Истина*/)
		{
			if(true/*ПустаяСтрока(Список)*/)
			{
				//Список = "ПолноеНаименование,НаименованиеСокращенное,ИНН,Свидетельство,ЮридическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет";
			}
			//Результат = "";
			//СоответствиеПараметров = Новый Соответствие();
			//СоответствиеПараметров.Вставить("ПолноеНаименование", 		" ");
			//СоответствиеПараметров.Вставить("НаименованиеСокращенное", 	" ");
			//СоответствиеПараметров.Вставить("ИНН",                		" ИНН ");
			//СоответствиеПараметров.Вставить("КПП",                		" КПП ");
			//СоответствиеПараметров.Вставить("Свидетельство",			" ");
			//СоответствиеПараметров.Вставить("СвидетельствоДатаВыдачи",	" от ");
			//СоответствиеПараметров.Вставить("ЮридическийАдрес",   		" ");
			//СоответствиеПараметров.Вставить("ФактическийАдрес",   		" ");
			//СоответствиеПараметров.Вставить("Телефоны",           		" тел.: ");
			//СоответствиеПараметров.Вставить("НомерСчета",         		" р/с ");
			//СоответствиеПараметров.Вставить("Банк",               		" в банке ");
			//СоответствиеПараметров.Вставить("БИК",                		" БИК ");
			//СоответствиеПараметров.Вставить("КоррСчет",           		" к/с ");
			//СоответствиеПараметров.Вставить("КодПоОКПО",          		" Код по ОКПО ");
			//Список          = Список + ?(Прав(Список, 1) = ",", "", ",");
			//ЧислоПараметров = СтрЧислоВхождений(Список, ",");
			return null;
		}
		// ОписаниеОрганизации()
		// Преобразует числовое описание шкалы в строку для вывода в печатные формы
		//
		// Параметры
		//  СтавкаВРублях - число в рублях, соответствует накопленной
		//                 по предыдущим ставкам сумме налога
		//  СтавкаВПроцентах - число в %, одна из ставок регрессивной шкалы
		//
		// Возвращаемое значение:
		//   Строка
		//
		// Пример:
		//     ПолучитьОписаниеРегрессивнойСтавки(5600, 7) = "5 600 руб. + 7%"
		//

		public object ПолучитьОписаниеРегрессивнойСтавки(/*СтавкаВРублях, СтавкаВПроцентах*/)
		{
			/*Возврат Формат(СтавкаВРублях,"ЧЦ=10; ЧДЦ=0; ЧН=' '") 
			+ ?(ЗначениеЗаполнено(СтавкаВРублях)," руб.","")
			+ ?(ЗначениеЗаполнено(СтавкаВРублях) и ЗначениеЗаполнено(СтавкаВПроцентах)," +" + Символы.ПС,"")
			+ Формат(СтавкаВПроцентах,"ЧН=' '")
			+ ?(ЗначениеЗаполнено(СтавкаВПроцентах)," %","");*/
			return null;
		}
		// ОписаниеРегрессивнойСтавки()
		// Функция собирает фамилию, имя и отчество физ. лица на указанную дату
		//
		// Параметры:
		//  ФизЛицо.    - физ. лицо, для которго необходимо получить данные
		//  ДатаПериода - дата получения сведений
		//
		// Возвращаемое значение:
		//  Структура с данными.
		//

		public object ФамилияИмяОтчество(/*ФизЛицо, ДатаПериода*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ПарФизЛицо",     ФизЛицо);
			//Запрос.УстановитьПараметр("ПарДатаПериода", ДатаПериода);
			/*Запрос.Текст = 
	"ВЫБРАТЬ
	|	Фамилия,
	|	Имя,
	|	Отчество
	|ИЗ
	|	РегистрСведений.ФИОФизЛиц.СрезПоследних(&ПарДатаПериода, ФизЛицо = &ПарФизЛицо)
	|";*/
			//Шапка = Запрос.Выполнить().Выбрать();
			//Шапка.Следующий();
			//Результат = Новый Структура("Фамилия, Имя, Отчество");
			//Результат.Фамилия  = ?(НЕ ЗначениеЗаполнено(Шапка.Фамилия),  "", Шапка.Фамилия);
			//Результат.Имя      = ?(НЕ ЗначениеЗаполнено(Шапка.Имя),      "", Шапка.Имя);
			//Результат.Отчество = ?(НЕ ЗначениеЗаполнено(Шапка.Отчество), "", Шапка.Отчество);
			return null;
		}
		// ФамилияИмяОтчество()
		// Формирует описание серий и характеристик ТМЦ для печати
		//
		// Параметры
		//  Выборка  – <ВыборкаИзРезультатаЗапроса > – Исходные данные
		//
		// Возвращаемое значение:
		//   Строка - Описание серий и характеристик ТМЦ
		//

		public object ПредставлениеСерий(/*Выборка*/)
		{
			//Результат = "(";
			if(true/*ЗначениеЗаполнено(Выборка.Характеристика)*/)
			{
				//Результат = Результат + Выборка.Характеристика;
				//Результат = СтрЗаменить(Результат, "<>", "");
			}
			if(true/*ЗначениеЗаполнено(Выборка.Серия)*/)
			{
				//Результат = ?(Результат = "(", Результат, Результат + "; ");
				//Результат = Результат + Выборка.Серия;
				//Результат = СтрЗаменить(Результат,  "(<>", "(");
				//Результат = СтрЗаменить(Результат, "; <>",  "");
			}
			//Результат = Результат + ")";
			//Возврат ?(Результат = "()", "", " " + Результат);
			return null;
		}
		// ПредставлениеСерий()
		// Стандартная для данной конфигурации функция форматирования прописи количества
		//
		// Параметры:
		//  Количество - число, которое мы хотим форматировать
		//
		// Возвращаемое значение:
		//  Отформатированная должным образом строковое представление количества.
		//

		public object КоличествоПрописью(/*Количество*/)
		{
			//ЦелаяЧасть   = Цел(Количество);
			//ДробнаяЧасть = Окр(Количество - ЦелаяЧасть, 3);
			if(true/*ДробнаяЧасть = Окр(ДробнаяЧасть,0)*/)
			{
				//ПараметрыПрописи = ", , , , , , , , 0";
			}
			return null;
		}
		// КоличествоПрописью()
		// Формируется текст плательщика или получателя для печатной формы платежного документа
		//
		// Параметры
		//  ТекстНаименования  	– <строка> – значение реквизита документа, если реквизит заполнен, он и выводится на печать
		//  ВладелецСчета  		– <СправочникСсылка.Организации>/<СправочникСсылка.Контрагенты> – владелец банковского счета
		//  БанковскийСчет		– <СправочникСсылка.БанковскиеСчета> – банковский счет плательщика или получателя
		//  ВБюджет				– <Булево> – признак перечисления денежных средств в бюджет
		//
		// Возвращаемое значение:
		//   <Строка>			– наименование плательщика или получателя, которое будет выводиться в печатной форме платежного документа
		//

		public object СформироватьТекстНаименованияПлательшикаПолучателя(/*ТекстНаименования, ВладелецСчета, БанковскийСчет, ВБюджет = Ложь*/)
		{
			//ТекстРезультат = ТекстНаименования;
			if(true/*ПустаяСтрока(ТекстРезультат)*/)
			{
				if(true/*ТипЗнч(ВладелецСчета) = Тип("СправочникСсылка.Организации") 
		  И ВБюджет 
		  И НЕ ПустаяСтрока(ВладелецСчета.НаименованиеПлательщикаПриПеречисленииНалогов)*/)
				{
					//ТекстРезультат = ВладелецСчета.НаименованиеПлательщикаПриПеречисленииНалогов;
				}
			}
			return null;
		}
		// СформироватьТекстНаименованияПлательшикаПолучателя()
		// Формирует значения по умолчанию реквизитов плательщика и получателя для банковских платежных документов
		//
		// Параметры
		//  Плательщик  		– <СправочникСсылка.Организации>/<СправочникСсылка.Контрагенты> – плательщик, владелец банковского счета
		//  СчетПлательщика		– <СправочникСсылка.БанковскиеСчета> – банковский счет плательщика
		//  Получатель  		– <СправочникСсылка.Организации>/<СправочникСсылка.Контрагенты> – получатель, владелец банковского счета
		//  СчетПолучателя		– <СправочникСсылка.БанковскиеСчета> – банковский счет получателя
		//  ВидОперации			– <Перечисление.ВидыОпераций...> – вид операции документа
		//
		// Возвращаемое значение:
		//   <Структура>		– структура строковых реквизитов плательщика и получателя
		//						  ключи структуры:
		//							ТекстПлательщика, ИННПлательщика, КПППлательщика,
		//							ТекстПолучателя, ИННПолучателя, КПППолучателя
		//							НаименованиеБанкаПлательщика, НомерСчетаПлательщика, БикБанкаПлательщика, СчетБанкаПлательщика
		//							НаименованиеБанкаПолучателя, НомерСчетаПолучателя, БикБанкаПолучателя, СчетБанкаПолучателя
		//

		public object СформироватьАвтоЗначенияРеквизитовПлательщикаПолучателя(/*Плательщик, СчетПлательщика, Получатель, СчетПолучателя, ВидОперации, ПеречислениеВБюджет = Ложь*/)
		{
			//РеквизитыПлательщика = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Плательщик, "ИНН,КПП");
			//ЗначенияРеквизитов = Новый Структура;
			/*ВБюджет = (ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеНалога)
		ИЛИ ПеречислениеВБюджет;*/
			/*ЗначенияРеквизитов.Вставить("ТекстПлательщика", 
		СформироватьТекстНаименованияПлательшикаПолучателя(
			"", Плательщик, СчетПлательщика, ВБюджет));*/
			//ЗначенияРеквизитов.Вставить("ИННПлательщика", РеквизитыПлательщика.ИНН);
			//УказаниеКППплательщикаОбязательно = ВБюджет;
			/*ЗначенияРеквизитов.Вставить("КПППлательщика", 
		?(УказаниеКППплательщикаОбязательно, 
		?(НЕ ПустаяСтрока(РеквизитыПлательщика.КПП), РеквизитыПлательщика.КПП, "0"), 
		""));*/
			if(true/*ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПереводНаДругойСчет*/)
			{
				//ВладелецСчетаПолучателя = Плательщик;
			}
			/*РеквизитыВладельцаСчетаПолучателя = 
		ОбщегоНазначения.ПолучитьЗначенияРеквизитов(ВладелецСчетаПолучателя, "ИНН,КПП");*/
			/*ЗначенияРеквизитов.Вставить("ТекстПолучателя", 
		СформироватьТекстНаименованияПлательшикаПолучателя(
			"", ВладелецСчетаПолучателя, СчетПолучателя, ВБюджет));*/
			//ЗначенияРеквизитов.Вставить("ИННПолучателя", РеквизитыВладельцаСчетаПолучателя.ИНН);
			//УказаниеКППполучателяОбязательно = ВБюджет;
			/*ЗначенияРеквизитов.Вставить("КПППолучателя", 
		?(УказаниеКППполучателяОбязательно, 
		?(НЕ ПустаяСтрока(РеквизитыВладельцаСчетаПолучателя.КПП), РеквизитыВладельцаСчетаПолучателя.КПП, "0"),
		""));*/
			//НепрямыеРасчетыУПлательщика = ЗначениеЗаполнено(СчетПлательщика.БанкДляРасчетов);
			/*БанкПлательщика = 
		?(НепрямыеРасчетыУПлательщика, СчетПлательщика.БанкДляРасчетов, СчетПлательщика.Банк);*/
			/*ЗначенияРеквизитов.Вставить("НаименованиеБанкаПлательщика", 
		БанкПлательщика.Наименование + " " + БанкПлательщика.Город);*/
			/*ЗначенияРеквизитов.Вставить("НомерСчетаПлательщика", 
		?(НепрямыеРасчетыУПлательщика, СчетПлательщика.Банк.КоррСчет, СчетПлательщика.НомерСчета));*/
			//ЗначенияРеквизитов.Вставить("БикБанкаПлательщика", БанкПлательщика.Код);
			//ЗначенияРеквизитов.Вставить("СчетБанкаПлательщика", БанкПлательщика.КоррСчет);
			//НепрямыеРасчетыУПолучателя = ЗначениеЗаполнено(СчетПолучателя.БанкДляРасчетов);
			/*БанкПолучателя = 
		?(НепрямыеРасчетыУПолучателя, СчетПолучателя.БанкДляРасчетов, СчетПолучателя.Банк);*/
			/*ЗначенияРеквизитов.Вставить("НаименованиеБанкаПолучателя", 
		БанкПолучателя.Наименование + " " + БанкПолучателя.Город);*/
			/*ЗначенияРеквизитов.Вставить("НомерСчетаПолучателя", 
		?(НепрямыеРасчетыУПолучателя, СчетПолучателя.Банк.КоррСчет, СчетПолучателя.НомерСчета));*/
			//ЗначенияРеквизитов.Вставить("БикБанкаПолучателя", БанкПолучателя.Код);
			//ЗначенияРеквизитов.Вставить("СчетБанкаПолучателя", БанкПолучателя.КоррСчет);
			return null;
		}
		//СформироватьАвтоЗначенияРеквизитовПлательщикаПолучателя()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ ПЕЧАТИ
		// Получает из текущих настроек пользователя имя кнопки печати,
		// которая определяет макет печатной формы по умолчанию.
		// Если не найдено, то берется первый макет в структуре макетов печатных форм,
		// и сохраняется в настройках пользователя.
		//
		// Параметры:
		//  ИмяОбъекта          - строка, содержащая имя объекта, для которого ищется макет печатной формы
		//  ФормаДиалога        - форма редактируемого объекта,
		//  СоответствиеМакетов - соответствие, содержащее названия (ключ) и имена (значение)
		//                        макетов печатных форм документа
		//

		public void СоздатьКнопкиПечати(/*ДокументОбъект, ФормаДокумента*/)
		{
			//ДеревоМакетов = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(ДокументОбъект.Ссылка, СтруктураВнутреннихПечатныхФорм);
			//СтрокаПоУмолчанию = УниверсальныеМеханизмы.ПолучитьСтрокуДереваМакетовПоУмолчанию(ДокументОбъект.Метаданные().Имя, ДеревоМакетов);
			if(true/*ДеревоМакетов.Строки.Количество() = 0*/)
			{
			}
			//ПанельКнопок = ФормаДокумента.ЭлементыФормы.ОсновныеДействияФормы;
			//КнопкиСправа = (ПанельКнопок.ВыравниваниеКнопок = ВыравниваниеКнопокКоманднойПанели.Право);
			if(true/*ПанельКнопок.Кнопки.Найти("Печать") = Неопределено*/)
			{
				if(true/*КнопкиСправа*/)
				{
					//ПанельКнопок.Кнопки.Вставить(0,, ТипКнопкиКоманднойПанели.Разделитель);
					//ПанельКнопок.Кнопки.Вставить(0,"Печать", ТипКнопкиКоманднойПанели.Действие, "Печать", Новый Действие("ОсновныеДействияФормыПечать"));
				}
			}
			if(true/*(СтрокаПоУмолчанию <> Неопределено) И (ПанельКнопок.Кнопки.Найти("ДействиеПечать") = Неопределено)*/)
			{
				if(true/*КнопкиСправа*/)
				{
					//ПанельКнопок.Кнопки.Вставить(0,, ТипКнопкиКоманднойПанели.Разделитель);
					//ПанельКнопок.Кнопки.Вставить(0,"ДействиеПечать", ТипКнопкиКоманднойПанели.Действие, СтрокаПоУмолчанию.Текст, Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию"));
				}
			}
		}
		// УстановитьКнопкуПечати()
		// Проверяет, умещаются ли переданные табличные документы на страницу при печати.
		//
		// Параметры
		//  ТабДокумент        – Табличный документ
		//  ВыводимыеОбласти   – Массив из проверяемых таблиц или табличный документ
		//  РезультатПриОшибке - Какой возвращать результат при возникновении ошибки
		//
		// Возвращаемое значение:
		//   Булево   – умещаются или нет переданные документы
		//

		public object ПроверитьВыводТабличногоДокумента(/*ТабДокумент, ВыводимыеОбласти, РезультатПриОшибке = Истина*/)
		{
			return null;
		}
		// ПроверитьВыводТабличногоДокумента()
		////////////////////////////////////////////////////////////////////////////////////////////
		// ПРОВЕРКА ЗАПРОСОВ ВЫПОЛНЯЮЩИХСЯ ПОД РЛС
		// Процедура копирует параметры запроса в массив данных для последующей проверки отчета
		//

		public void ЗапомнитьПараметрыЗапроса(/*Запрос, МассивПарамтеровЗапроса*/)
		{
			//СтруктураЗапроса = Новый Структура("Текст", Запрос.Текст);
			//МассивПарамтеровЗапроса.Добавить(СтруктураЗапроса);
		}

		public void ПроверитьОшибкуЗапрос(/*Запрос, ИнформацияОбОшибке, ОшибкаДоступа = ложь, ЗадаватьВопрос = ложь*/)
		{
			if(true/*ПолныеПрава.ИспользуетсяОграниченияПравДоступаНаУровнеЗаписей()*/)
			{
				if(true/*НЕ ТранзакцияАктивна() и (НЕ ЗадаватьВопрос ИЛИ РаботаСДиалогами.ЗадатьВопрос("Внимание! При формировании отчета произошла неизвестная ошибка. " + Символы.ПС
			+ "Вы можете настроить и повторно сформировать отчет, " + Символы.ПС 
			+ "или запустить поиск точной причины ошибки. Найти точную причину ошибки " + Символы.ПС
			+ "(может занять продолжительное время)?", РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Нет)*/)
				{
					if(true/*ПолныеПрава.ОшибкаДоступа(Запрос)*/)
					{
						if(true/*НЕ ТранзакцияАктивна()*/)
						{
							//РаботаСДиалогами.ВывестиПредупреждение("Внимание! Для формирования отчета недостаточно прав. "+ Символы.ПС +"Настройте отчет или обратитесь к администратору системы");
						}
					}
				}
			}
		}
	}
}
